﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Classes
{
	public class Vehiculo
	{
		private String _patente;
		private String _chasis;
		private String _nroMotor;
		private String _marca;
		private String _modelo;
		private DateTime _fabricacion;
		private Equipo _equipo;
		private Scoring _scoring;

        public Vehiculo(string patente, string chasis, string nroMotor, string marca, string modelo, DateTime fabricacion)
        {
            this.Patente = patente;
            this.Chasis = chasis;
            this.NroMotor = nroMotor;
            this.Marca = marca;
            this.Modelo = modelo;
            this.Fabricacion = fabricacion;

        }

        //Agrego este constructor solo para crear ela DB con el scoring inicial. Mariana 01.11
        public Vehiculo(string patente, string chasis, string nroMotor, string marca, string modelo, DateTime fabricacion, Scoring scoring)
        {
            this.Patente = patente;
            this.Chasis = chasis;
            this.NroMotor = nroMotor;
            this.Marca = marca;
            this.Modelo = modelo;
            this.Fabricacion = fabricacion;
            this._scoring = scoring;

        }


		public Scoring Scoring
		{
			get { return _scoring; }
			set 
			{
				if ((this._scoring.Nombre == ((Scoring)value).Nombre) && (this._scoring.Descuento == ((Scoring)value).Descuento))
				{
					throw new Exception("Este vehiculo ya posee este scoring");
				}

				_scoring = value; 
			}
		}

		#region Get / Set
		public DateTime Fabricacion
		{
			get { return _fabricacion; }
			set { _fabricacion = value; }
		}

		public string Modelo
		{
			get { return _modelo; }
			set { _modelo = value; }
		}

		public String Marca
		{
			get { return _marca; }
			set { _marca = value; }
		}

		public String NroMotor
		{
			get { return _nroMotor; }
			set { _nroMotor = value; }
		}

		public String Chasis
		{
			get { return _chasis; }
			set { _chasis = value; }
		}

		public String Patente
		{
			get { return _patente; }
			set { _patente = value; }
		}

		public Equipo Equipo
		{
			get { return _equipo; }
			set { _equipo = value; }
		}
		#endregion
        #region Get / Set
       
        public string FechaFabricacion
        {
            get { return _fabricacion.ToString(); }
            set
            {
                try
                {
                    _fabricacion = DateTime.Parse(value);
                }
                catch (Exception)
                {
                    throw new Exception("Fecha con formato Invalido");
                }
            }
        }
        #endregion



   		public Equipo GenerarReporte(Equipo e)
		{
			return null;
		}

		public Equipo GenerarAlerta(Equipo e)
		{
			return e;
		}

		public bool InstalarEquipo(Equipo e)
		{
            this.Equipo = e;
            return true;
		}

        
        public bool ActualizarVehiculo()
        {
            return true;
        }

        public void ImprimirDatos()
        {
            Console.WriteLine("PATENTE: " + this.Patente);
            Console.WriteLine("FECHA DE FABRICACION: " + this.FechaFabricacion);
            Console.WriteLine("MARCA: " + this.Marca);
            Console.WriteLine("MODELO: " + this.Modelo);
            Console.WriteLine("MOTOR: " + this.NroMotor);
            Console.WriteLine("CHASIS: " + this.Chasis);
            Console.WriteLine("");

            if (this._equipo != null)
            {
                Console.WriteLine("Datos del Equipo:");
                Console.WriteLine(" Modelo: " + this._equipo.Modelo);
                Console.WriteLine(" Marca: " + this._equipo.Marca);
                Console.WriteLine(" ID: " + this._equipo.ID);
                Console.WriteLine("");
                Console.WriteLine("");
            }
            else Console.WriteLine("El Vehiculo NO tiene ningun equipo Instalado !!!");
        }
	}
}
